const express = require("express");

const session = require("cookie-session");
const multer = require("multer");
const path = require("path");
const fs = require("fs");
// 创建应用
const app = express();
// 上传图片配置
const upload = multer({
  // 上传文件的存储目录
  dest: "./static/upload",
  // 单个文件大小限制在2m以内
  limits: {
    fileSize: 1024 * 1024 * 2
  },
});
// 配置静态文件路径
app.use(express.static(path.resolve(__dirname, './static')));
app.use('/upload', express.static(path.resolve(__dirname, './static/upload')));
//注册express解析json格式       内置中间件
app.use(express.json());
//注册express解析encode格式     内置中间件
app.use(express.urlencoded({ extended: false }));
// 设置session
app.use(
  session({
    keys: ["secret"],
    maxAge: 100 * 60 * 30,
  })
);

// 挂载前台路由
const router = require("./router/index");
// 挂载登陆
const login = require("./router/login");
// 挂载后台路由
const admin = require("./router/admin/index");
const auth = require("./middleware/auth");
const personal = require('./router/personal')

// 前台路由
app.use("/", router);
// 个人日记路由
app.use("/personal", personal);
// 登陆页面
app.use("/login", login);
// 后台权限
app.use("/admin/?*", auth.allowToAdmin);
// 上传操作
app.post('/admin/?*',upload.single('upload'),(req,res,next)=>{
  // 上传成功后的文件对象
  let {file} = req;
  if(file){
    //file.originalname = 文件原名称
    let extname = path.extname(file.originalname);
    // file.path = 上传后的文件路径
    fs.renameSync(file.path,file.path + extname);
    // file.filename = 上传后的文件名
    req.uploadUrl = '/upload/' + file.filename + extname
  }
  next()
})
// 后台路由
app.use("/admin", admin);

// 监听服务器
app.listen(3000);
console.log("开启成功");
